<?php
class Modelo_noticias extends Model {

    public $datos = array();
    public $comentarios = array();
    public $html;
    public $nombre;
    public $texto;
    public $texto_ampliado;
    public $peso = array();
    public $tipo;
    public $peso_1;
    public $peso_2;
    public $id;
    public $empresa;
    public $id_comentario;
    public $numero_de_comentarios;
    public $tabla = 'min_noticias';

    function Modelo_noticias() {
        parent::Model();
    }

    /**
     * Guarda nuevas noticias y actualizadas ademas actualiza el orden
     * @param <type> $id
     * @param <type> $texto
     * @param <type> $texto_ampliado
     * @param <type> $nombre
     * @param <type> $peso
     * @param <type> $tipo
     * @param <type> $empresa
     */
    function set_noticias(
            $id,
            $texto,
            $texto_ampliado,
            $nombre,
            $peso,
            $tipo,
            $empresa
    ) {

        if($this->db->simple_query("SELECT * FROM $this->tabla WHERE id=".$id)) {
            $query = $this->db->query("UPDATE $this->tabla set nombre='".$nombre."', texto='".$texto."', texto_ampliado='".$texto_ampliado."', peso='".$peso."', tipo='".$tipo."', empresa='".$empresa."', peso_2=Now() WHERE id=".$id);
        }else {
            $query = $this->db->query("INSERT INTO $this->tabla set nombre='".$nombre."', texto='".$texto."', texto_ampliado='".$texto_ampliado."', peso='".$peso."', tipo='".$tipo."', empresa='".$empresa."', peso_2=Now()");
        }

        //Renumera columna orden segun orden
        $query = $this->db->query("SELECT * FROM $this->tabla ORDER BY peso ASC, peso_2 DESC");
        $i=1 ;
        foreach ($query->result() as $row) {
            $this->db->query("UPDATE $this->tabla set peso='".$i."', peso_2=Now() WHERE id=".$row->id);
            $i ++;
        }
    }


    /**
     * Obtiene peso de noticias
     */
    function get_orden_peso() {
        $this->get_noticias();
        foreach($this->datos->result() as $row) {
            $this->peso[$row->peso]=$row->nombre;
        }
    }

    /**
     * Devuelve una noticia en particular
     * @param <type> $id
     */
    function get_noticia($id) {
        $query = $this->db->query("SELECT * FROM $this->tabla WHERE id=".$id);
        $row = $query->row();
        $this->nombre = $row->nombre;
        $this->texto = $row->texto;
        $this->texto_ampliado   = $row->texto_ampliado;
        $this->tipo = $row->tipo;
        $this->peso_1 = $row->peso;
        $this->peso_2 = $row->peso_2;
        $this->id = $row->id;
        $this->empresa = $row->empresa;
    }

    /**
     * Lee los noticias de la base de datos lo carga en $this->datos
     */

    function get_noticias($empresa='empresa1', $tipo='todos') {
        if($tipo=='todos') {
            $this->datos = $this->db->query("SELECT * FROM $this->tabla ORDER BY peso ASC, peso_2 DESC");
        }elseif($tipo=='publico') {
            $this->datos = $this->db->query("SELECT * FROM $this->tabla WHERE empresa='".$empresa."' AND tipo='publico' ORDER BY peso ASC, peso_2 DESC");
        }elseif($tipo=='privado') {
            $this->datos = $this->db->query("SELECT * FROM $this->tabla WHERE empresa='".$empresa."' AND tipo='privado' ORDER BY peso ASC, peso_2 DESC");
        }
    }

    /**
     * Lee los datos de un noticias para mostrar los datos ampiados los guarda en
     * $this->nombre
     * $this->texto_ampliado
     */
    function get_amplia_noticias($id) {
        //Agregado SEO
        $query = $this->db->query("SELECT id FROM $this->tabla WHERE nombre='".$id."'");
        $row1=$query->row();
        $id=$row1->id;


        $query = $this->db->query("SELECT nombre, texto_ampliado FROM $this->tabla WHERE id=".$id);
        if ($query->num_rows() > 0) {
            $row=$query->row();
            $this->nombre = $row->nombre;
            $this->texto_ampliado = $row->texto_ampliado;
        }
    }

    /**
     * Crear div con noticias
     * El lenguaje incluido aqui va en el archivo general_lang.php
     * ampliar_portada_noticias
     * editar_portada_noticias
     */
    function get_noticias_div() {
        $query = $this->db->query("SELECT * FROM $this->tabla ORDER BY peso ASC, peso_2 DESC");
        $html = '';
        foreach ($query->result() as $row) {
            $html .= '<div class="news2">';
            $html .= $row->texto;
            $html .= "<a href='".base_url()."index.php/noticias/ampliar/$row->nombre' class='more'>".lang('ampliar_portada_noticias')."</a><br />";
            if ($this->session->userdata('permisos')=='admin' || $this->session->userdata('permisos')=='edit') {
                $html .= "<a href='base_url()index.php/noticias/editar/$row->nombre' class='more'>lang('editar_portada_noticias')</a>";
                $html .= '</p>';
            }
            $html .= '</div>';
            $html .= '<div style="height:5px"></div><!-- separator -->';
        }
        $this->html = $html;
    }

    /**
     * Retorna la cantindad de las noticias
     */
    function get_noticias_paginacion($num,$url) {
        $sql = "SELECT * FROM $this->tabla ORDER BY peso ASC, peso_2 DESC";
        $query = $this->db->query($sql);

        //Carga parametros para la funcion Pagination
        $config["base_url"]   = base_url().index_page().$url;
        $config["total_rows"] = $query->num_rows();
        $config["per_page"]   = '5';
        $config["first_link"] = "Primero";
        $config["last_link"]  = "Ultimo";

        //Carga Pagination
        $this->pagination->initialize($config);
        $num = $num;

        //Agrega Paginacion en el sql
        if ($num=='')
            $num=0;
        if($config["per_page"] != -1)
            $sql .= " limit ";
        if($config["per_page"] != -1 AND $num != -1)
            $sql .= "$num,";
        if($config["per_page"] != -1)
            $sql .= $config["per_page"];

        $this->datos = $this->db->query($sql);
    }

    /**
     * Pasa id de la noticia a comentar
     * @param <type> $id
     */
    function set_id_comentario($id) {
        $this->id_comentario = $id;
    }

    /**
     * Guarda Comentarios
     * @param <type> $id
     * @param <type> $texto
     */
    function set_comentarios(
            $id,
            $texto
    ) {
        $this->db->query("INSERT INTO comentarios set texto='".$texto."', id_noticia=".$id.", peso_2=Now(), usuario='".$this->session->userdata('username')."'");
    }

    /**
     * Devuelve el numero de comentarios de una noticia
     * @param <type> $id
     */
    function get_comentarios_total($id) {
        //echo "SELECT count(id) as comentarios FROM comentarios WHERE noticia_id='".$id."'";
        $query = $this->db->query("SELECT count(id) as comentarios FROM comentarios WHERE id_noticia='".$id."'");
        if ($query->num_rows() > 0) {
            $row=$query->row();
            $this->numero_de_comentarios = $row->comentarios;
        }else {
            $this->numero_de_comentarios = 0;
        }
    }

    /**
     * Lista comentarios
     * @param <type> $id
     */
    function get_comentarios($id) {
        $this->comentarios = $this->db->query("SELECT * FROM comentarios WHERE id_noticia=".$id." ORDER BY peso_2 DESC");
    }

}

?>
